package com.wanxin.car.util.helper;

import com.wanxin.car.util.helper.impl.CodeHelperImpl;
import com.wanxin.car.util.helper.impl.CodeHelperTemplateImpl;


/**
 * 代码生成
 * 
 * @author lqk
 * 
 */
public class CodeHelper {

	private static CodeHelperImpl helper = new CodeHelperImpl();
	private static CodeHelperTemplateImpl tmphelper = new CodeHelperTemplateImpl();
	
	/**
	 * 在控制台输出实体类,使用空白参数调用 String springAppCtxName, String dataSourceId, String table的方法
	 * @param table 表名
	 */
	public static void printEntity(String table) {
		helper.printEntity(null, null, table);
	}

	/**
	 * 在控制台输出实体类
	 * @param springAppCtxName 生成spring context用 new ClassPathXmlApplicationContext(springAppCtxName)
	 * @param dataSourceId spring中要使用的数据源id
	 * @param table 表名
	 */
	public static void printEntity(String springAppCtxName, String dataSourceId, String table) {
		helper.printEntity(springAppCtxName, dataSourceId, table);
	}

	/**
	 * 输出实体类dao
	 * @param entity
	 */
	public static void printEntityDao(Class entity) {
		helper.printEntityDao(entity);
	}

	/**
	 * 输出action类
	 * @param action strutr2自动映射的action类路径
	 * @param entity
	 * @param dao
	 */
	public static void printEntityAction(String action, Class entity, Class dao) {
		helper.printEntityAction(action, entity, dao);
	}

	/**
	 * 输出显示实体列表的jsp
	 * @param aciton struts2映射的action名称
	 */
	public static void printEntityJspList(Class entityClass, String aciton) {

		// 优先使用模板
		String s = tmphelper.printEntityJspList(entityClass, aciton);
		if( s!=null ){
			System.out.print(s);
		} else {
			// 如果失败使用硬编码
			helper.printEntityJspList(entityClass, aciton);
		}

	}

	/**
	 * 输出实体的jsp录入修改页面
	 * @param clazz
	 * @param aciton struts2映射的action名称
	 */
	public static void printEntityJspInput(Class clazz, String aciton) {
		String s = tmphelper.printEntityJspInput(clazz, aciton);
		if( s!=null ){
			System.out.print(s);
		} else {
			helper.printEntityJspInput(clazz, aciton);
		}
	}

	public static void main(String[] args) {
		printEntity(null, null, "RAIN_CRIT_TYPE");
	}
}
